#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

import commands
import re
import os

"""
On doit fournir un dictionnaire contenant les elements suivant:
	essid=chaine de caractère
	interface=chaine de caractère
	mac=chaine de caractère forme suivante xx:xx:xx:xx:xx:xx
	dhcp=(0 ou 1), 1 etant configuration par DHCP
	ip=chaine de caractère
	cryptage : "none", "wep"
	cle

"""

class ConfigLan:
	def __init__(self,session):
		self.session=session
		self.essid=""
		self.interface=""
		self.mac=""
		self.dhcp=0
		self.ip=""
		self.masque=""
		self.cryptage=""
		self.cle=""
		self.pilote=""

	def configlan(self,param):
		self.essid=param["essid"]
		self.interface=param["interface"]
		self.mac=param["mac"]
		self.dhcp=param["dhcp"]
		self.ip=param["ip"]
		self.masque=param["masque"]
		self.gw=param["gw"]
		self.cryptage=param["cryptage"]
		self.cle=param["cle"]
		self.pilote=param["pilote"]
		if self.interface != "":
			#configuration de la partie radio
			if self.mac != "":
				z=commands.getoutput('iwconfig ' +str(self.interface)+' ap ' +str(self.mac))

			if self.essid != "":
				z=commands.getoutput('iwconfig ' +str(self.interface)+' essid '+str(self.essid))				
			else: 
				print "pas d'essid a configurer"
		
			if self.cryptage == "wep":
				if self.cle != "":
					z=commands.getoutput('iwconfig ' +str(self.interface)+' key ' +str(self.cle))

			#configuration IP
			if self.dhcp==1:
				print "dhcp"
				z=commands.getoutput('sudo dhclient ' +self.interface)
			else:
				if self.ip != "":
					if self.masque == "":
						z=commands.getoutput('sudo ifconfig ' +str(self.interface)+' '+str(self.ip))
                                              
					else :
						
                                                 z=commands.getoutput("ifconfig "+str(self.interface)+' '+str(self.ip)+' netmask '+str(self.masque))
                                                 
				if self.gw !="":
					z=commands.getoutput('sudo route add default gw ' +str(self.gw))


		else: 
			print "pas d'interface a configurer"



if __name__=="__main__":
	test=ConfigLan("un")

	result=commands.getoutput('iwconfig')
	# expression reguliere permettant de recuperer l'interface air
	regex=re.compile('([\w]{2,8}) *(.*)')
	result_regex=regex.findall(result)
	for elem in result_regex:
		if elem[1]!='no wireless extensions.':
			regex=re.compile('([a-z]{2,4}\d{1})$')
			result_regex=regex.findall(elem[0])
			if result_regex!=[]:
				inter=result_regex			

	print 'interface wifi : '+str(inter[0])

	dico={}	
	dico["interface"]=str(inter[0])
	dico["essid"]="ESIEE"
	dico["dhcp"]=1
	dico["cryptage"]="none"
	dico["cle"]=""
	dico["mac"]=""
	dico["ip"]=""
	dico["masque"]=""
	dico["gw"]=""
	dico["pilote"]=""

	test.configlan(dico)

